package vue;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import metier.Stage;
import vue.affectation.JPanAfficherAffectations;
import vue.affectation.JPanAjoutAffectation;
import vue.affectation.JPanModifAffectation;
import vue.affectation.JPanSuppAffectation;
import vue.eleve.JPanAffStageEleve;
import vue.eleve.JPanAjoutEleve;
import vue.eleve.JPanModifierEleve;
import vue.eleve.JPanSupprimerEleve;
import vue.grade.JPanAfficherGrades;
import vue.help.JPanHelp;
import vue.help.JPanHelpPropos;
import vue.noteEleve.JPanAffNoteEleve;
import vue.noteEleve.JPanAjoutNoteEleve;
import vue.noteEleve.JPanModifNoteEleve;
import vue.noteEleve.JPanSuppNoteEleve;
import vue.stage.JPanAffStage;
import vue.stage.JPanAjoutStage;
import vue.stage.JPanModifStage;
import vue.stage.JPanSuppStage;
import configuration.Constante;
import configuration.MessageAppli;
import ctr.commun.CommunGest;

/**
 * Fichier permettant de gerer la navigation par la barre de menu.
 */
public class GestionNavigation implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		CommunGest communGest = new CommunGest();
		ArrayList<Stage> lStage = communGest.getListeStage();
		if (actionEvent.getSource() instanceof JMenuItem) {
			// ActionListener du MenuItem
			JMenuItem itemMenu = (JMenuItem) actionEvent.getSource();
			
			// TODO Switch mais voir le compiler du projet...
			// Menu Fichier
			if (Constante.MENU_FICHIER_QUITTER.toString().equals(itemMenu.getName())){
				MenuControle.getF().setVisible(false);
				MenuControle.getF().dispose();
			}
			
			// Menu Help
			else if (Constante.MENU_HELP_A_PROPOS.toString().equals(itemMenu.getName())){
				JOptionPane.showConfirmDialog(
						MenuControle.getF(), new JPanHelpPropos(),"A Propos",JOptionPane.CLOSED_OPTION);
			}else if (Constante.MENU_HELP.toString().equals(itemMenu.getName())){
				JOptionPane.showConfirmDialog(
						MenuControle.getF(), new JPanHelp(),"Liste raccourcis",JOptionPane.CLOSED_OPTION);
			}
			
			// Menu STAGE
			else if (Constante.MENU_STAGE_AJOUT.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAjoutStage("Ajout d'un stage",null,null,null));
			} 	
			
			// Pour les autres outils, au moins un stage doit exister en base
			else if ( lStage == null || lStage.isEmpty()){
				JOptionPane.showMessageDialog(MenuControle.getF(), MessageAppli.MSG_STAGE_AUCUN_STAGE + "Action impossible.", MessageAppli.MSG_TITRE_INFO, JOptionPane.INFORMATION_MESSAGE);
			}else if (Constante.MENU_STAGE_SUPP.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanSuppStage("Suppression d'un stage"));
			}else if (Constante.MENU_STAGE_AFF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAffStage());
			}else if (Constante.MENU_STAGE_MODIF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanModifStage("Modifier un stage"));
			}
			
			// Menu Eleve
			else if (Constante.MENU_ELEVE_AJOUT.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAjoutEleve("Ajout d'un eleve"));
			}else if (Constante.MENU_ELEVE_MODIF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanModifierEleve("Modifier un eleve"));
			}else if (Constante.MENU_STAGE_AFF_ELEVE.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAffStageEleve());
			}else if (Constante.MENU_ELEVE_SUPPRIMER.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanSupprimerEleve("Supprimer un eleve"));
			}
			
			// Menu Note
			else if (Constante.MENU_NOTE_AJOUT.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAjoutNoteEleve("Ajout d'une note",new CommunGest().getListeStage().get(0)));
			}else if (Constante.MENU_NOTE_MODIF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanModifNoteEleve("Modifier note ", new CommunGest().getListeStage().get(0)));
			}else if (Constante.MENU_NOTE_AFF_CLASS.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanel());
			}else if (Constante.MENU_NOTE_SUPPRIMER.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanSuppNoteEleve("Supprimer note ", new CommunGest().getListeStage().get(0)));
			}else if (Constante.MENU_NOTE_AFF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAffNoteEleve("Affiche note eleve"));
			}
			
			// Menu Affectation
			else if (Constante.MENU_AFFECT_AJOUT.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAjoutAffectation("Ajout d'une affectation"));
			}else if (Constante.MENU_AFFECT_MODIF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanModifAffectation("Modification d'une affectation"));
			}else if (Constante.MENU_AFFECT_ELEVE.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAfficherAffectations("Historique des affectations"));
			}else if (Constante.MENU_AFFECT_SUPPRIMER.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanSuppAffectation("Suppression d'une affectation"));
			}
			
			// Menu Grade
			else if (Constante.MENU_GRADE_AFF.toString().equals(itemMenu.getName())){
				MenuControle.afficherPan(new JPanAfficherGrades("Historique des grades"));
			}
		}
	}
}